/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamananggaranbiayarapatkerja;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.common.ClassConnection;
import org.sadhar.sia.common.ClassUtility;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

/**
 *
 * @author Yohan Hardinugroho
 */
public class PerekamanAnggaranBiayaRapatKerjaDAOImpl implements PerekamanAnggaranBiayaRapatKerjaDAO {

    public List<Map> listStatusPengajuan(String tahun, String kodeUnit) {
        // tahun = 2009, kodeUnit=03001040
        String sql = "SELECT a.kodeUnit,a.tahun,a.isRevisi,a.isSudahDiajukan FROM ppmk.anggaranRABNonRapatKerja a where a.tahun=? and a.kodeUnit=?";
        // TODO Auto-generated method stub
        try {
            return ClassConnection.getJdbc().queryForList(
                    sql,
                    new Object[]{ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listStatusPengajuan2(String tahun, String kodeUnit, String isRevisi, String isSudahDiajukan) {
        // tahun = 2009, kodeUnit=03001040
        String sql = "SELECT a.kodeUnit,a.tahun,a.isRevisi,a.isSudahDiajukan FROM ppmk.anggaranRABNonRapatKerja a where a.tahun=? and a.kodeUnit=? and a.isRevisi=? and a.isSudahDiajukan=?";
        // TODO Auto-generated method stub
        try {
            return ClassConnection.getJdbc().queryForList(
                    sql,
                    new Object[]{ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit), ClassUtility.quote(isRevisi), ClassUtility.quote(isSudahDiajukan)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public String selectIsDikunci(String tahun, String kodeUnit, String isRevisi) throws Exception {
        String sql = "SELECT DISTINCT(isDikunci) FROM ppmk.kunciAnggaranBiaya WHERE "
                + "tahunAnggaran=? AND "
                + "kodeUnit=? AND "
                + "kodeJenisAnggaran=2 AND isRevisi=?";
        try {
            return (String) ClassAntiNull.AntiNullString(ClassConnection.getJdbc().queryForObject(sql, new Object[]{
                        tahun, kodeUnit, isRevisi
                    }, String.class));
        } catch (Exception ex) {
            return "";
        }
    }

    public double countStatusPengajuan(String tahun, String kodeUnit) {
        // tahun = 2009, kodeUnit=03001040
        String sql = "SELECT count(*) as countall FROM ppmk.anggaranRABNonRapatKerja a where a.tahun=? and a.kodeUnit=?";
        // TODO Auto-generated method stub
        try {
            List<Map> lmap = ClassConnection.getJdbc().queryForList(
                    sql,
                    new Object[]{ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit)});
            double count = 0;
            for (Map m : lmap) {
                count = ClassAntiNull.AntiNullDouble(m.get("countall"));
            }
            return count;
        } catch (Exception ex) {
            ex.printStackTrace();
            return 0;
        }
    }

    @Override
    public double totalAnggaranNonRapat(String tahun, String kodeUnit,
            String isRevisi, String isSudahDiajukan) {

        String sql = "select sum(arab.harga*arab.kuantitas) as totalAnggaranNonRapat " + "from ppmk.anggaranRABNonRapatKerja arab " + "where arab.tahun=? and arab.kodeUnit=? " + "and arab.isRevisi=? and arab.isSudahDiajukan=?";
        try {
            List<Map> lmap = ClassConnection.getJdbc().queryForList(
                    sql,
                    new Object[]{ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit),
                        ClassUtility.quote(isRevisi),
                        ClassUtility.quote(isSudahDiajukan)});
            double count = 0;
            for (Map m : lmap) {
                count = ClassAntiNull.AntiNullDouble(m.get("totalAnggaranNonRapat"));
            }
            return count;
        } catch (Exception ex) {
            ex.printStackTrace();
            return 0;
        }

    }

    public String tahunKelompokAnggaranYangDigunakan(String tahunAnggaran) {
        String sql = "select tahunKelompok from ppmk.kelompokAnggaranYangDigunakan where tahunAnggaran=?";
        try {
            List<Map> lmap = ClassConnection.getJdbc().queryForList(
                    sql,
                    new Object[]{ClassUtility.quote(tahunAnggaran)});

            String tahunKelompok = "";
            for (Map m : lmap) {
                tahunKelompok = ClassAntiNull.AntiNullString(m.get("tahunKelompok"));
            }
            return tahunKelompok;
        } catch (Exception ex) {
            ex.printStackTrace();
            return "";
        }
    }

    public List<Map> listKelompokBiaya(String tahun, String namaPosBiaya) {
        String sqls = "select sub.kodePosBiaya,pos.namaTabelItem, pos.namaPosBiaya,klpk.kodeKelompokBiaya,klpk.kodeJenisBiaya " + " from ppmk.kelompokBiaya as klpk " + " inner join ppmk.subkelompokAnggaranBiaya as sub on klpk.kodeKelompokBiaya=sub.kodeKelompokBiaya " + " inner join ppmk.posBiaya as pos on  sub.kodePosBiaya=pos.kodePosBiaya " + " where tahunKelompok = ? and klpk.kodeJenisBiaya=1 and klpk.kodePosBiaya=5 and namaPosBiaya like '%" + namaPosBiaya.trim() + "%'";
        try {
            List<Map> lmap = ClassConnection.getJdbc().queryForList(
                    sqls,
                    new Object[]{ClassUtility.quote(tahun)});
            return lmap;
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    @Override
    public double totalAnggaranRapat(String tahun, String kodeUnit,
            String isRevisi, String isSudahDiajukan) {

        String sql =
                "select sum(harga*kuantitas*jumlahHari) as totalAnggaranRapat " + "from ppmk.anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat " + "left join ppmk.rapatKerjaUnit as rapatUnit on anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit " + "where anggaranRapat.isRapat='y' " + "and anggaranRapat.tahun=? " + "and rapatUnit.kodeUnit=? " + "and anggaranRapat.isRevisi=? " + "and anggaranRapat.isSudahDiajukan=?";
        try {
            List<Map> lmap = ClassConnection.getJdbc().queryForList(
                    sql,
                    new Object[]{ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit),
                        ClassUtility.quote(isRevisi),
                        ClassUtility.quote(isSudahDiajukan)});
            double count = 0;
            for (Map m : lmap) {
                count = ClassAntiNull.AntiNullDouble(m.get("totalAnggaranRapat"));
            }
            // isRevisi = y, isSudahDiajukan = y
            //select sum(harga*kuantitas*jumlahHari) as totalAnggaranRapat from ppmk.anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat left join ppmk.rapatkerjaunit as rapatUnit on anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit where isRapat='y' and anggaranRapat.tahun='2009' and rapatUnit.kodeUnit='03001040' and anggaranRapat.isRevisi='y' and anggaranRapat.isSudahDiajukan='y';
            return count;
        } catch (Exception ex) {
            ex.printStackTrace();
            return 0;
        }
    }

    public List<Map> listAnggaranBiayaRapatKerja(String isRapat, String tahun, String kodeUnit) {
        String sql = "select anggaranRapat.tahun, anggaranRapat.isRevisi, anggaranRapat.isSudahDiajukan " + "from ppmk.anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat " + "left join ppmk.rapatKerjaUnit as rapatUnit on (anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit)" + " where " + "anggaranRapat.isRapat=? " + "and anggaranRapat.tahun=? " + "and rapatUnit.kodeUnit=?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        ClassUtility.quote(isRapat),
                        ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit)
                    });
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listAnggaranBiayaRapatKerja2(String isRapat, String tahun, String kodeUnit, String isRevisi, String isSudahDiajukan) {
        String sql = "select anggaranRapat.tahun, anggaranRapat.isRevisi, anggaranRapat.isSudahDiajukan " + "from ppmk.anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat " + "left join ppmk.rapatKerjaUnit as rapatUnit on (anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit)" + " where " + "anggaranRapat.isRapat=? " + "and anggaranRapat.tahun=? " + "and rapatUnit.kodeUnit=? and anggaranRapat.isRevisi=? and  anggaranRapat.isSudahDiajukan=?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        ClassUtility.quote(isRapat),
                        ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit),
                        ClassUtility.quote(isRevisi),
                        ClassUtility.quote(isSudahDiajukan)
                    });
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public int cekKunciAnggaranBiaya(String tahun, String kodeUnit) {
        String sql = "SELECT * FROM ppmk.kunciAnggaranBiaya k where k.tahunAnggaran=? and k.kodeUnit=? and k.kodeJenisAnggaran=? and k.isRevisi=?";
        List<Object> l = new ArrayList<Object>();
        l.add(tahun);
        l.add(kodeUnit);
        l.add("1");
        l.add("N");
        List<Map> lm = ClassConnection.getJdbc().queryForList(sql, l.toArray());
        return lm.size();
    }

    public void insertKunciAnggaranBiaya(String tahun, String kodeUnit) {
        String sql = "insert into ppmk.kunciAnggaranBiaya (tahunAnggaran,kodeUnit,kodeJenisAnggaran,isRevisi,isDikunci) values (?,?,1,'N','Y')";
        List<Object> l = new ArrayList<Object>();
        l.add(tahun);
        l.add(kodeUnit);
        ClassConnection.getJdbc().update(sql, l.toArray());
    }

    public void updateAnggaranBiaya(int id, int kuantitas, int jumlahHari) {
        String sql = "UPDATE ppmk.anggaranBiayaRapatKerjaDanKegiatan  a set a.kuantitas=?,a.jumlahHari=? where a.id=? ";

        ClassConnection.getJdbc().update(sql, new Object[]{kuantitas, jumlahHari, id});
    }

    public void updateKunciAnggaranBiaya(String tahun, String kodeUnit) {
        String sql = "update ppmk.kunciAnggaranBiaya set isDikunci='Y' where  tahunAnggaran=? and kodeUnit=? and kodeJenisAnggaran=1 and isRevisi='N'";
        List<Object> l = new ArrayList<Object>();
        l.add(tahun);
        l.add(kodeUnit);
        ClassConnection.getJdbc().update(sql, l.toArray());
    }

    public List<Map> listRapatKerja(String tahun, String kodeUnit) {
        String sql = "select rk.idRapatKerjaUnit, namaRapatKerja, jenisRapatKerja from ppmk.rapatKerjaUnit as rk" + " inner join ppmk.rapatKerja as ra on rk.kodeRapatKerja=ra.kodeRapatKerja" + " inner join ppmk.jenisRapatKerja as jr on rk.kodeJenisRapatKerja=jr.kodeJenisRapatKerja" + " where tahun =? and kodeUnit =? and isRencana='Y'"; // tahun dan kode unit dari session"
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        ClassUtility.quote(tahun),
                        ClassUtility.quote(kodeUnit)
                    });
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> cekPosBiayaKhususUnit(int kodeKelompokBiaya, String kodeUnitKerja) {
        String sql = "select * from ppmk.posBiayaKhususUnit where kodeKelompokBiaya=? and kodeUnitKerja=?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{Integer.valueOf(kodeKelompokBiaya), ClassUtility.quote(kodeUnitKerja)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listNamaItemFromItemBiaya(int kodePosBiaya) {
        String sql = "select * from ppmk.itemBiaya where kodePosBiaya =?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{Integer.valueOf(kodePosBiaya)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listDetailFromItemBiaya(String tahun, int kodeItem) {
        String sql = "select namaItem, satuan, harga " + "from ppmk.itemBiaya as item " + "left join ppmk.hargaItemBiaya as hi on item.kodeitem = hi.kodeItem " + "left join kamus.satuanBarang as sb on item.kodeSatuan=sb.kodeSatuanBarang " + "where hi.tahun=? and item.kodeItem=?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{ClassUtility.quote(tahun), Integer.valueOf(kodeItem)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listDetailBarang(int idJenisBarang, String namaBarang) {
        String sql = "select * from asset.barang as item left join kamus.satuanBarang as sb on item.kodeSatuanBarang=sb.kodeSatuanBarang where item.idJenisBarang = ? and item.namaBarang like ?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{Integer.valueOf(idJenisBarang), ClassUtility.quote("%" + namaBarang + "%")});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listHargaBarang(String tahun, int idBarang) {

        String sql = "select hrg.idHargaBarang, hargaBeliSatuanPerKecil from asset.hargaBarang as hrg inner join ppmk.nilaiPatokanHarga as nilaiHrg on hrg.idHargaBarang = nilaiHrg.idHargaBarang where tahun = ? and hrg.idBarang = ?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{ClassUtility.quote(tahun), Integer.valueOf(idBarang)});

        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listDetailJenisBarang(int kodeklasifikasi, String jenisBarang) {
        String sql = "select * from kamus.jenisBarang where kodeKlasifikasi=? and jenisBarang like ?";
        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{Integer.valueOf(kodeklasifikasi), ClassUtility.quote("%" + jenisBarang + "%")});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listDetailRapatKerja(String tahun, String kodeUnit) {
        String sql = "select abrkk.id,abrkk.tahun,rku.idRapatKerjaUnit,rk.namaRapatKerja,pb.namaPosBiaya,pb.`namaTabelItem`,abrkk.`kodeItemBiayaBarang`,abrkk.harga,abrkk.kuantitas,abrkk.jumlahHari, "
                + " if(abrkk.jumlahHari=0,harga*kuantitas,harga*kuantitas*jumlahHari) as total "
                + " from ppmk.anggaranBiayaRapatKerjaDanKegiatan abrkk "
                + " inner join ppmk.rapatKerjaUnit rku on (abrkk.kodeRapatKerjaSubKegiatan = rku.idRapatKerjaUnit) "
                + " inner join ppmk.rapatKerja rk on (rku.`kodeRapatKerja` = rk.`kodeRapatKerja`) "
                + " inner join ppmk.posBiaya pb on (abrkk.`kodePosBiaya` = pb.`kodePosBiaya`) "
                + " where abrkk.`isRapat`='Y' and rku.tahun=? and rku.`kodeUnit`=? ";

        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{ClassUtility.quote(tahun), ClassUtility.quote(kodeUnit)});

        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public List<Map> listDetailRapatKerja(String tahun, String kodeUnit, String isRevisi) {
//        String sql = "select abrkk.tahun,abrkk.isSudahDiajukan,rku.`idRapatKerjaUnit`,rk.`namaRapatKerja`,pb.`namaPosBiaya`,ib.`namaItem`,abrkk.harga,abrkk.kuantitas,abrkk.`jumlahHari`, " + " if(abrkk.jumlahHari=0,harga*kuantitas,harga*kuantitas*jumlahHari) as total " + " from ppmk.anggaranBiayaRapatKerjaDanKegiatan abrkk " + " inner join ppmk.rapatKerjaUnit rku on (abrkk.`kodeRapatKerjaSubKegiatan` = rku.`idRapatKerjaUnit`) " + " inner join ppmk.rapatKerja rk on (rku.`kodeRapatKerja` = rk.`kodeRapatKerja`) " + " inner join ppmk.posBiaya pb on (abrkk.`kodePosBiaya` = pb.`kodePosBiaya`) " + " inner join ppmk.itemBiaya ib on (abrkk.`kodeItemBiayaBarang` = ib.`kodeItem`) " + " where abrkk.`isRapat`='Y' and rku.tahun=? and rku.`kodeUnit`=? and abrkk.isSudahDiajukan = ? ";
        String sql = "select abrkk.tahun,rku.idRapatKerjaUnit,rk.namaRapatKerja,pb.namaPosBiaya,pb.`namaTabelItem`,abrkk.`kodeItemBiayaBarang`,abrkk.harga,abrkk.kuantitas,abrkk.jumlahHari, "
                + " if(abrkk.jumlahHari=0,harga*kuantitas,harga*kuantitas*jumlahHari) as total "
                + " from ppmk.anggaranBiayaRapatKerjaDanKegiatan abrkk "
                + " inner join ppmk.rapatKerjaUnit rku on (abrkk.kodeRapatKerjaSubKegiatan = rku.idRapatKerjaUnit) "
                + " inner join ppmk.rapatKerja rk on (rku.`kodeRapatKerja` = rk.`kodeRapatKerja`) "
                + " inner join ppmk.posBiaya pb on (abrkk.`kodePosBiaya` = pb.`kodePosBiaya`) "
                + " where abrkk.`isRapat`='Y' and rku.tahun=? and rku.`kodeUnit`=? and abrkk.isRevisi = ? ";

        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{ClassUtility.quote(tahun), ClassUtility.quote(kodeUnit), ClassUtility.quote(isRevisi)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public void hapusAnggaranBiayaRapatKerja(int id) {
        String sql = "DELETE FROM ppmk.anggaranBiayaRapatKerjaDanKegiatan where id=?";
        ClassConnection.getJdbc().update(sql, new Object[]{id});
    }

    public List<Map> listRABNonRapatkerja(String tahun, String kodeUnit, String isRevisi, String isSudahDiajukan) {
        String sql = "select kodeUnit, tahun, isRevisi, isSudahDiajukan "
                + " from ppmk. anggaranRABNonRapatKerja "
                + " where tahun=? and kodeUnit=? "
                + " and isRevisi=? and isSudahDiajukan=?";
        return ClassConnection.getJdbc().queryForList(sql, new Object[]{
                    ClassUtility.quote(tahun),
                    ClassUtility.quote(kodeUnit),
                    ClassUtility.quote(isRevisi),
                    ClassUtility.quote(isSudahDiajukan)
                });
    }

    public List<Map> listDetailRapatKerja(String tahun, String kodeUnit, int idRapatKerjaUnit, String isRevisi) {
        String sql = "select  abrkk.id,abrkk.tahun,rku.idRapatKerjaUnit,rk.namaRapatKerja,pb.namaPosBiaya,pb.`namaTabelItem`,abrkk.`kodeItemBiayaBarang`,abrkk.harga,abrkk.kuantitas,abrkk.jumlahHari, "
                + " if(abrkk.jumlahHari=0,harga*kuantitas,harga*kuantitas*jumlahHari) as total "
                + " from ppmk.anggaranBiayaRapatKerjaDanKegiatan abrkk "
                + " inner join ppmk.rapatKerjaUnit rku on (abrkk.kodeRapatKerjaSubKegiatan = rku.idRapatKerjaUnit) "
                + " inner join ppmk.rapatKerja rk on (rku.`kodeRapatKerja` = rk.`kodeRapatKerja`) "
                + " inner join ppmk.posBiaya pb on (abrkk.`kodePosBiaya` = pb.`kodePosBiaya`) "
                + " where abrkk.`isRapat`='Y' and rku.tahun=? and rku.`kodeUnit`=? and rku.`idRapatKerjaUnit`=? and abrkk.isRevisi=?";

        try {
            return ClassConnection.getJdbc().queryForList(sql, new Object[]{ClassUtility.quote(tahun), ClassUtility.quote(kodeUnit), Integer.valueOf(idRapatKerjaUnit), ClassUtility.quote(isRevisi)});
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ArrayList();
        }
    }

    public long cekDetailRapatKerja(String tahun, int kodeRapatKerjaSubKegiatan, int kodePosBiaya, int kodeItemBiayaBarang, String isRevisi) {
        String sql = "select count(*) as jumlah from anggaranBiayaRapatKerjaDanKegiatan a " + " where a.tahun=? and a.`kodeRapatKerjaSubKegiatan`=? " + " and a.`kodePosBiaya`=? and a.`kodeItemBiayaBarang`=? " + " and a.`isRevisi`=? ";
        try {
            List<Map> lm = ClassConnection.getJdbc().queryForList(sql, new Object[]{ClassUtility.quote(tahun),
                        Integer.valueOf(kodeRapatKerjaSubKegiatan), Integer.valueOf(kodePosBiaya), Integer.valueOf(kodeItemBiayaBarang), ClassUtility.quote(isRevisi)});
            long jumlah = 0;
            for (Map m : lm) {
                jumlah = ClassAntiNull.AntiNullLong(m.get("jumlah"));
            }
            return jumlah;
        } catch (Exception ex) {
            ex.printStackTrace();
            return 0;
        }
    }

    public long insertRapatKerja(String tahun, int kodeRapatKerjaSubKegiatan, int kodePosBiaya, int kodeItemBiayaBarang, double harga,
            int kuantitas, int jumlahHari, String isRapat, String isRevisi, String isSudahDiajukan) {
        String sql = "insert into anggaranBiayaRapatKerjaDanKegiatan (tahun,`kodeRapatKerjaSubKegiatan`,"
                + "`kodePosBiaya`,`kodeItemBiayaBarang`,harga, " + " kuantitas,`jumlahHari`,`isRapat`,`isRevisi`,`isSudahDiajukan`) VALUES (?,?,?,?,?,?,?,?,?,?)";
        SimpleJdbcInsert insert = new SimpleJdbcInsert(ClassConnection.getJdbc()).withTableName("anggaranBiayaRapatKerjaDanKegiatan").usingGeneratedKeyColumns("id");
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("tahun", tahun);
        param.put("kodeRapatKerjaSubKegiatan", kodeRapatKerjaSubKegiatan);
        param.put("kodePosBiaya", kodePosBiaya);
        param.put("kodeItemBiayaBarang", kodeItemBiayaBarang);
        param.put("harga", harga);
        param.put("kuantitas", kuantitas);
        param.put("jumlahHari", jumlahHari);
        param.put("isRapat", isRapat);
        param.put("isRevisi", isRevisi);
        param.put("isSudahDiajukan", isSudahDiajukan);

        return insert.executeAndReturnKey(param).longValue();
//        ClassConnection.getJdbc().update(sql, new Object[]{
//                    ClassUtility.quote(tahun),
//                    Integer.valueOf(kodeRapatKerjaSubKegiatan),
//                    Integer.valueOf(kodePosBiaya),
//                    Integer.valueOf(kodeItemBiayaBarang),
//                    Double.valueOf(harga),
//                    Integer.valueOf(kuantitas),
//                    Integer.valueOf(jumlahHari),
//                    ClassUtility.quote(isRapat),
//                    ClassUtility.quote(isRevisi),
//                    ClassUtility.quote(isSudahDiajukan)
//                });
    }

    public void updateRapatKerja(String tahun, String kodeUnit, String isRevisi) {
        String sql = "update  ppmk.anggaranBiayaRapatKerjaDanKegiatan abrkk inner join ppmk.rapatKerjaUnit rku on (abrkk.kodeRapatKerjaSubKegiatan = rku.idRapatKerjaUnit) "
                + " inner join ppmk.rapatKerja rk on (rku.`kodeRapatKerja` = rk.`kodeRapatKerja`) "
                + " set abrkk.isSudahDiajukan='Y'   "
                + " where abrkk.`isRapat`='Y' and rku.tahun=? and rku.kodeUnit=? and isRevisi=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    ClassUtility.quote(tahun),
                    ClassUtility.quote(kodeUnit),
                    ClassUtility.quote(isRevisi)
                });
    }
}
/*
 * // kueri no (2)
"select kodeUnit, tahun, isRevisi, isSudahDiajukan" +
"from ppmk.anggaranrabnonrapatkerja" +
"where tahun =? and kodeUnit=?"; // tahun dan kode unit dari session

 * // kueri no (3)
"select totalPlafon " +
"from ppmk.plafon " +
"where kodeUnit=? and tahun =? and kodeJenisAnggaran='1'"; // tahun dan kode unit dari session
 *
 *
 * kueri no (4)
total anggaran non rapat
 * status pengajuan revisi dan belum klik kirim
"select sum(harga*kuantitas) as totalAnggaranNonRapat" +
"from ppmk.anggaranRABNonRapatKerja" +
"where tahun=? and kodeUnit=? and isRevisi='Y' and isSudahDiajukan='N'"; // tahun dan kode unit dari session
 *
 * status pengajuan revisi dan sudah klik kirim
"select sum(harga*kuantitas) as totalAnggaranNonRapat" +
"from ppmk.anggaranRABNonRapatKerja" +
"where tahun=? and kodeUnit=? and isRevisi='Y' and isSudahDiajukan='Y'"; // tahun dan kode unit dari session

total anggaran rapat
"select anggaranRapat.tahun, isRevisi, isSudahDiajukan" +
"from ppmk.anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat" +
"left join ppmk.rapatKerjaUnit as rapatUnit  on anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit" +
"where isRapat ='Y' and anggaranRapat.tahun=? and rapatUnit.kodeUnit=?"; // tahun dan kode unit dari session

 * jika is revisi = Y is diajukan N
"select if(jumlahHari=0,sum(harga*kuantitas),sum(harga*kuantitas*jumlahHari)) as totalAnggaranRapat" +
"from anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat" +
"left Join ppmk.rapatKerjaUnit as rapatUnit on anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit" +
"where isRapat='Y' and anggaranRapat.tahun=? and rapatUnit.kodeUnit=? and isRevisi='y' and isSudahDiajukan='n'"; // tahun dan kode unit dari session

 * jika isRevisi='y' is diajukan ='y'
"select if(jumlahHari=0,sum(harga*kuantitas),sum(harga*kuantitas*jumlahHari)) as totalAnggaranRapat" +
"from anggaranBiayaRapatKerjaDanKegiatan as anggaranRapat" +
"left Join ppmk.rapatKerjaUnit as rapatUnit on anggaranRapat.kodeRapatKerjaSubKegiatan=rapatUnit.idRapatKerjaUnit" +
"where isRapat='Y' and anggaranRapat.tahun=? and rapatUnit.kodeUnit=? and isRevisi='y' and isSudahDiajukan='y'"; // tahun dan kode unit dari session
 *
 *
 * no (5)
"select tahunKelompok from ppmk.kelompokAnggaranYangDigunakan where tahunAnggaran=?"; // tahunAnggaran dari session
 *
 *
"select sub.kodePosBiaya, namaPosBiaya"+
"from ppmk.kelompokBiaya as klpk" +
"inner join ppmk.subkelompokAnggaranBiaya as sub on klpk.kodeKelompokBiaya=sub.kodeKelompokBiaya" +
"inner join ppmk.posBiaya as pos on  sub.kodePosBiaya=pos.kodePosBiaya" +
"where tahunKelompok = ? and klpk.kodeJenisBiaya='1' and klpk.kodePosBiaya='5'"; // tahun kelompok ambil dari kueri diatas

 * no(6)
"select namaTabelItem from ppmk.posBiaya where kodePosBiaya =?"; //kodePosBiaya dipilih dari popup

 * jika kueri menghasilkan itemBiaya
lingkaran 3
"select namaItem from ppmk.itemBiaya where kodePosBiaya=? and namaItem like ?"; //kode pos biaya sesuai yg dipilih, namaItem like ditextbox

lingkaran 4
"select namaItem, satuan, harga from ppmk.itemBiaya as item left join ppmk.hargaItemBiaya as hi on item.kodeItem=hi.kodeItem left join kamus.satuanBarang as sb on item.kodeSatuan=sb.kodeSatuanBarang where hi.tahun=? and item.kodeItem=?"; // item.kodeItem berdasarkan yang dipilih tadi. tahun dari session
 *
 *
 *
 * jika barang

jika kode pos biaya =1
"select jenisBarang from kamus.jenisBarang where kodeKlasifikasi ='1' and jenisBarang like ?"; // jenis barang like textbox

jika kode pos biaya =3
"select jenisBarang from kamus.jenisBarang where kodeklasifikasi='3' and jenisBarang like ?";
 *
jika kode pos biaya = 4
"select jenisBarang from kamus.jenisBarang where kodeklasifikasi='2' and jenisBarang like ?";
 *
untuk lingkaran (3)
"select namaBarang from asset.barang where idJenisBarang = ? and namaBarang like ?"; // id jenis barang diambil dari yg tadi dipilih

untuk lingkaran (4)
"select namaBarang, satuan from asset.barang as item' +
"left join kamus.satuanBarang as sb on item.kodeSatuanBarang = sb.kodeSatuanBarang" +
"where item.idBarang =?"; // item id barang berdasarkan popup

untuk menampilkan harga
"select hrg.idHargaBarang, hargaBeliSatuanPerKecil from asset.hargaBarang as hrg" +
"inner join ppmk.nilaiPatokanHarga as nilaiHrg on hrg.idHargaBarang = nilaiHrg.idHargaBarang" +
"where tahun =? and hrg.idBarang=?"; // tahun dari session,hrg.idBarnag dari popup

nomer 7.
grid lingakaran (5)
"select namaRapatKerja, jenisRapatKerja from ppmk.rapatKerjaUnit as rk" +
"inner join ppmk.rapatKerja as ra on rk.kodeRapatKerja=ra.kodeRapatKerja" +
"inner join ppmk.jenisRapatKerja as jr on rk.kodeJenisRapatKerja=jr.kodeJenisRapatKerja" +
"where tahun =? and kodeUnit =? and isRencana='y'"; // tahun dan kode unit dari session
 */

